package cn.catsdad.constant.iConstant;

/**
 * 警报类型
 *
 * @author xuyl
 * @version 1.0 2024/7/1
 * @see SuppressWarnings 用于避免异常压制中使用魔法值
 */
@SuppressWarnings(ICommonWarningType.UNUSED)
public interface ICommonWarningType {

    /**
     * 全部报警
     */
    String ALL = "all";

    /**
     * 拆装箱
     */
    String BOXING = "boxing";

    /**
     * 可能会丧失精度的强制类型转换
     */
    String CAST = "cast";

    /**
     * 弃用的api
     */
    String DEPRECATED_API = "deprecation";

    /**
     * 弃用的注解
     */
    String DEPRECATED_ANN = "dep_ann";

    /**
     * 抑制在 switch 语句中缺少 break 语句导致的“case穿透”警告。
     */
    String SWITCH_PENETRATE = "fallthrough";

    /**
     * 抑制finally中未返回值
     */
    String FINALLY = "finally";

    /**
     * 抑制与隐藏变量相关的警告。当局部变量或方法参数与类的成员变量或方法名相同时，编译器会发出此类警告。
     */
    String HIDING = "hiding";

    /**
     * 抑制在 switch 语句中缺少某些 case 或 default 分支的警告。这通常用于当开发者有意忽略某些枚举值或特定条件时。
     */
    String INCOMPLETE_SWITCH = "incomplete-switch";

    /**
     * 抑制与 Javadoc 注释相关的警告。这包括格式错误、缺失的注释或参数不匹配等问题。
     */
    String JAVA_DOC = "javadoc";

    /**
     * nls抑制与非 NLS（非本地化字符串）字符串文字相关的警告。这有助于确保国际化支持的正确性。
     */
    String NLS = "nls";

    /**
     * 抑制与空值分析相关的警告。这包括可能的空指针异常或未对可能为 null 的变量进行检查的情况。
     */
    String NULL = "null";

    /**
     * 抑制与使用原始类型而不是泛型相关的警告。在泛型编程中，使用原始类型而不是泛型类型参数会导致此类警告。
     */
    String RAW_TYPES = "rawtypes";

    /**
     * 抑制与资源管理相关的警告。这通常与自动关闭的资源（如使用 try-with-resources 语句）有关。
     */
    String RESOURCE = "resource";

    /**
     * 抑制当实现 Serializable 接口的类没有定义 serialVersionUID 字段时发出的警告。这有助于确保序列化版本的兼容性。
     */
    String SERIAL = "serial";

    /**
     * 抑制与静态成员访问相关的警告。这包括从实例方法中访问静态变量或方法，或从静态上下文中访问非静态成员的情况。
     */
    String STATIC_ACCESS = "static-access";

    /**
     * 抑制与合成访问方法相关的警告。这通常与内部类或匿名类访问外部类的私有成员有关。
     */
    String SYNTHETIC_ACCESS = "synthetic-access";

    /**
     * 抑制与未经检查的转换或操作相关的警告。这通常出现在泛型编程中，当编译器无法验证类型安全时。
     */
    String UNCHECKED = "unchecked";

    /**
     * 抑制在静态上下文中访问非静态字段的警告。这通常发生在静态方法中直接访问类的实例字段时。
     */
    String UNQUALIFIED_FIELD_ACCESS = "unqualified-field-access";

    /**
     * 抑制与未使用的变量、方法或参数相关的警告。这有助于清理代码中那些不再需要的部分
     */
    String UNUSED = "unused";

    /**
     * 抑制与可变参数列表（varargs）相关的警告。这包括在方法中使用可变参数时可能遇到的问题。
     */
    String VARARGS = "varargs";

}
